<?php

//定义自定义命名空间
namespace ClassStudy01;
/**
 * 定义一个对象
 * 对象类的成员访问类中的其他成员需要用$this关键词来进行调用
 * 可以对成员设置访问权限，var针对于属性，同public
 */
class User
{

    //定义私有的成员属性
    private $name;

    /**
     * 定义公开的成员属性
     * 需要注意的是，var相当于public权限公开的意思，只能作用域变量而非方法
     * 相关访问权限跟java差不多
     */
    public $age;

//定义私有的成员方法
    private function demo1()
    {

    }

//定义公开的成员方法
    public function demo02()
    {
        //方法中需要调用类中其他成员需要使用$this关键字
        $this . $this->name = "小明";
    }


    /**
     * 构造方法
     * 类的构造方法，只能有一个构造方法
     * @param $name
     * @param $age
     */
    public function __construct($name, $age)
    {
        //变量 $this 代表自身的对象。
        $this->name = $name;
        $this->age = $age;
    }

    /**
     * 析构函数
     * 析构函数(destructor) 与构造函数相反，当对象结束其生命周期时（例如对象所在的函数已调用完毕），系统自动执行析构函数。
     * PHP 5 引入了析构函数的概念，这类似于其它面向对象的语言，其语法格式如下：
     * 一般情况下不需要手动显示
     */
    function __destruct()
    {
        echo "有成员销毁了";
    }

    /**
     * 可以理解为java的toString方法
     * @return string
     */
    public function __toString()
    {
        return $this->name . $this->age;
    }

}

$user = new User("小明", 15);

$user->demo02();//调用对象的方法
$userAge = $user->age;//调用对象的属性


echo $user;